Historically, some computers (i.e., clients) have initiated requests for data and/or services to other computers (i.e., servers). Such computers can be connected directly to each other or connected through networks, such as an IP (Internet Protocol) network such as the Internet. The client can direct the request to an intermediary device, such as an intermediary server or other device (e.g., router), that directs the request to one of several servers that can handle the request.
For example, an individual or user of a client makes a request over the Internet to view a video output on the display of the client. The client directs this request to a router that can provide the request to one of several servers, which can provide the video output (e.g., stream of video data) from the server to the client. The router selects the server to handle the request based on some factor, such as balancing the workload among several servers. For example, the router alternates requests among the different servers, so that, over time, each server receives approximately the same number of requests from different clients, and the work load of each server is thus approximately balanced.
The router can make the selection using various other approaches as well. In one conventional approach, the router can receive information on the reported load of each server, and thus direct the request to the server that has the lowest reported load among those available to handle the request. In another conventional approach, the router makes estimates of the network proximity of the client to each available server (e.g., by estimating the number of hops or intermediate connections between the client and each server). In this approach, the router directs the request to a server that is in some network sense “closest” to the client (e.g., has the fewest estimated hops between client and server).
In a further conventional approach, the router makes a determination of the type of request that the client is making (e.g., for video data) and selects a server based on the type of request. In other words, several servers are available to the client, but different servers specialize in providing different types of data (e.g., video, audio, or text data). In another conventional approach, a router can combine several factors, such as workload balancing, network proximity, and request type when selecting a server to respond to the request.
In an additional conventional approach, a network switch maintains a table including information on previous requests from specific clients. Using this approach, the network switch can route a new incoming request from a specific client to a server that the client has used frequently in the past. Thus, a server that serves the same client may provide better performance for that client than some other server the client has not used previously.